using System;
using System.Collections.Generic;
using System.Text;

namespace ControladorDifuso.Defusificadores
{
    public class Centroide : Defusificador
    {
        static decimal deltaMuestreo = 1;

        public static decimal DeltaMuestreo
        {
            get
            {
                return Centroide.deltaMuestreo;
            }
            set 
            {
                Centroide.deltaMuestreo = value;
            }
        }

        public override decimal  Defusificar()
        {
            if (this.area() == 0)
                return 0;
            return this.areaPesos() / this.area();
        }

        public decimal area()
        {
            decimal area = decimal.Zero;
            for (decimal indice = this.EspacioConsecuente.ValorMinimo; indice <= this.EspacioConsecuente.ValorMaximo; indice += Centroide.deltaMuestreo)
            {
                area += this.PertenenciaPunto(indice);
            }
            return area;
        }

        public decimal areaPesos()
        {
            decimal areaPeso = decimal.Zero;
            for (decimal indice = this.EspacioConsecuente.ValorMinimo ; indice <= this.EspacioConsecuente.ValorMaximo; indice += Centroide.deltaMuestreo)
            {
                areaPeso += this.PertenenciaPunto(indice)* (decimal) indice;
            }
            return areaPeso;
        }
    }
}
